using hao_Dto;
using hao_Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Product.Service
{
    public interface IProductService
    {
        /// <summary>
        /// 添加商品
        /// </summary>
        Task<Guid> AddProductAsync(ProductPublishDto dto);
        
        /// <summary>
        /// 添加商品（带用户ID）
        /// </summary>
        Task<Guid> AddProductAsync(ProductPublishDto dto, Guid userId);
        
        /// <summary>
        /// 更新商品信息
        /// </summary>
        Task<bool> UpdateProductAsync(Guid id, ProductPublishDto dto);
        
        /// <summary>
        /// 保存商品（新增或更新）
        /// </summary>
        Task<Guid> SaveProductAsync(ProductPublishDto dto);
        
        /// <summary>
        /// 根据ID获取商品详情
        /// </summary>
        Task<ProductResponseDto> GetProductByIdAsync(Guid id);
        
        /// <summary>
        /// 获取商品列表（分页）
        /// </summary>
        Task<(List<ProductListDto> products, int total)> GetProductsAsync(int page, int pageSize, string category = null, string keyword = null);
        
        /// <summary>
        /// 删除商品（软删除）
        /// </summary>
        Task<bool> DeleteProductAsync(Guid id);
        
        /// <summary>
        /// 根据用户ID获取商品列表
        /// </summary>
        Task<List<ProductListDto>> GetProductsByUserIdAsync(Guid userId);
        
        /// <summary>
        /// 获取商品图片
        /// </summary>
        Task<List<ProductImage>> GetProductImagesAsync(Guid productId);
        
        /// <summary>
        /// 搜索商品
        /// </summary>
        Task<(List<ProductListDto> products, int total)> SearchProductsAsync(string keyword, int page, int pageSize);
    }
}
